package com.casic.ops.entity.vo;

import com.casic.ops.entity.domain.CommandTemplateDO;
import com.orion.utils.convert.TypeStore;
import com.orion.utils.time.Dates;
import lombok.Data;

import java.util.Date;

/**
 * @ClassName ops-platform
 * @Description  命令模板vo
 * @Author mianbin
 * @Date 2022/5/31 10:59
 * @Version 1.0
 **/
@Data
public class CommandTemplateVO {

    /**
     * id
     */
    private Long id;

    /**
     * 模板名称
     */
    private String name;

    /**
     * 模板值
     */
    private String value;

    /**
     * 命令描述
     */
    private String description;

    /**
     * 创建用户id
     */
    private Long createUserId;

    /**
     * 创建用户名
     */
    private String createUserName;

    /**
     * 修改用户id
     */
    private Long updateUserId;

    /**
     * 修改用户名
     */
    private String updateUserName;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 创建时间
     */
    private String createTimeAgo;

    /**
     * 修改时间
     */
    private Date updateTime;

    /**
     * 修改时间
     */
    private String updateTimeAgo;

    public static CommandTemplateVO commandTemplateDO2commandTemplateVO(CommandTemplateDO p) {
        CommandTemplateVO vo = new CommandTemplateVO();
        vo.setId(p.getId());
        vo.setName(p.getTemplateName());
        vo.setValue(p.getTemplateValue());
        vo.setDescription(p.getDescription());
        vo.setCreateUserId(p.getCreateUserId());
        vo.setCreateUserName(p.getCreateUserName());
        vo.setUpdateUserId(p.getUpdateUserId());
        vo.setUpdateUserName(p.getUpdateUserName());
        vo.setCreateTime(p.getCreateTime());
        vo.setUpdateTime(p.getUpdateTime());
        vo.setCreateTimeAgo(Dates.ago(p.getCreateTime()));
        vo.setUpdateTimeAgo(Dates.ago(p.getUpdateTime()));
        return vo;
    }

    static {
        TypeStore.STORE.register(CommandTemplateDO.class, CommandTemplateVO.class, p -> {
            CommandTemplateVO vo = new CommandTemplateVO();
            vo.setId(p.getId());
            vo.setName(p.getTemplateName());
            vo.setValue(p.getTemplateValue());
            vo.setDescription(p.getDescription());
            vo.setCreateUserId(p.getCreateUserId());
            vo.setCreateUserName(p.getCreateUserName());
            vo.setUpdateUserId(p.getUpdateUserId());
            vo.setUpdateUserName(p.getUpdateUserName());
            vo.setCreateTime(p.getCreateTime());
            vo.setUpdateTime(p.getUpdateTime());
            vo.setCreateTimeAgo(Dates.ago(p.getCreateTime()));
            vo.setUpdateTimeAgo(Dates.ago(p.getUpdateTime()));
            return vo;
        });
    }
}
